package com.santoker.user.service.service.common;

import com.baomidou.mybatisplus.extension.service.IService;
import com.santoker.user.service.model.UserRecord;

import java.util.List;

/**
 * <p>
 * 用户记录表 服务类
 * </p>
 *
 * @author Jiangs
 * @since 2020-04-01
 */
public interface IUserRecordService extends IService<UserRecord> {

    /**
     * 查询用户记录列表
     *
     * @param userId 用户ID
     * @return
     */
    List<UserRecord> findListByUserId(Integer userId);

    /**
     * 查询用户分享记录列表
     *
     * @param userId 用户ID
     * @return
     */
    List<UserRecord> findShareListByUserId(Integer userId);

    /**
     * 查询用户分享曲线列表
     *
     * @return
     */
    List<UserRecord> findGroupByUserIdShare();

    /**
     * 查询用户分享、精选曲线列表
     *
     * @return
     */
    List<UserRecord> findGroupByUserIdShareAndSelect();

    /**
     * 查询记录列表
     *
     * @param title 标题
     * @param share 分享
     * @return
     */
    List<UserRecord> findByTitleLikeAndShare(String title, Integer share);

    /**
     * 查询记录列表
     *
     * @param title    标题
     * @param share    分享
     * @param selected 精选
     * @return
     */
    List<UserRecord> findByTitleLikeAndShareAndSelected(String title, Integer share, Integer selected);

    /**
     * 查询所有记录
     *
     * @return
     */
    List<UserRecord> findByAll();

    /**
     * 查询所有训练集记录列表
     *
     * @param train 训练集
     * @param type  类型
     * @return
     */
    List<UserRecord> findByTrainAndType(Integer train, String type);

    /**
     * 通过ID，查询记录信息
     *
     * @param recordId 记录ID
     * @return
     */
    UserRecord getUserRecordById(Integer recordId);

    /**
     * 通过ID，查询用户记录信息
     *
     * @param recordId 记录ID
     * @param userId   用户ID
     * @return
     */
    UserRecord getUserRecordByIdAndUserId(Integer recordId, Integer userId);

    /**
     * 查询用户记录列表
     *
     * @param userId 用户ID
     * @param title  标题
     * @return
     */
    List<UserRecord> findByUserIdAndTitle(Integer userId, String title);

    /**
     * 获取记录列表
     *
     * @param userId   用户ID
     * @param selected 精选
     * @param share    分享
     * @param train    训练集
     * @return
     */
    List<UserRecord> findList(Integer userId, Integer selected, Integer share, Integer train);

    /**
     * 根据口令，获取曲线记录
     *
     * @param recordToken 曲线记录口令
     * @return
     */
    UserRecord getUserRecordByRecordToken(String recordToken);

    /**
     * 获取曲线数量
     *
     * @param userId 用户ID
     * @return
     */
    Integer getTotalByUserId(Integer userId);

    /**
     * 获取训练集列表
     *
     * @param type 类型
     * @return
     */
    List<UserRecord> getTrainListByType(String type);

    /**
     * 获取用户曲线列表
     *
     * @param userId 用户ID
     * @return
     */
    List<UserRecord> getListByUserId(Integer userId);

    /**
     * 查询用户精选曲线列表
     *
     * @return
     */
    List<UserRecord> findGroupByUserIdSelect();

}
